'''
必须先绑定才能使用,否则运行时直接抛异常
给 对象添加属性(当前对象内有效)
d1.属性 = 值
给 对象添加新的函数(当前对象内有效)
d1.函数 = MethodType(绑定的函数,对象d1);
给 类型添加新的函数(实例化的对象都有该函数，使用该函数必须实在绑定后才能使用)
'''
from types import MethodType
class Demo:
    typeName = 'typeName';
    def __init__(self,name):
        self.name = name;

#
d1 = Demo('张三')
print(d1.name)

def function1(self,name):
    self.name = name;

#
d1.fun1 = MethodType(function1,d1);
d1.fun1('李四')
print(d1.name)
#
'''
使用 MethodType 为对象绑定一个方法
from types import MethodType  导入对应的包
d1 = Demo('张三') 获取到实例化的对象
创建一个新的方法
d1.fun1 = MethodType(function1,d1);
绑定方法
d1.fun1 绑定的方法
MethodType 导入的包中带的函数
function1  自定义的函数
d1 实例出来的对象
'''
print('{:-^30}'.format('分割线'))
d2 = Demo("李四");
print(d2.name)
#d2.fun1('123')  直接抛异常

def function2(self,age):
    self.age = age;
#
Demo.func2 = function2;     #为Demo类型绑定一个方法

d2.func2(123);  #调用d2 中的 func2 方法
print(d2.age);  #输出：123




